#include <iostream>
using namespace std;

class MyClassA
{
public:
    MyClassA(int a)
    {
        my_a = a;
        my_b = a;
        cout << "1 params MyClassA..." << endl;
    }

    MyClassA(int a, int b)
    {
        my_a = a;
        my_b = b;
        cout << "2 params MyClassA..." << endl;
    }

    ~MyClassA()
    {
        my_a = 0;
        my_b = 0;
        cout << "~MyClassA..." << endl;
    }

public:
    void PrintData()
    {
        cout << "my_a = " << my_a << " my_b = " << my_b << endl;
    }

private:
    int my_a;
    int my_b;
};

void ClassTest1()
{
    //MyClassA A1; //因为已经自己定义了有参构造函数，不再提供默认无参构造函数
    //错误 C2512 “MyClassA” : 没有合适的默认构造函数可用
    //A1.PrintData();
}

void ClassTest2()
{
    //有参构造函数的第一种调用场景
    MyClassA A1(1, 2);
    A1.PrintData();

    //有参构造函数的第二种调用场景//这里调用的是一个参数的构造函数！！！
    //(3, 4)逗号表达式，值为4
    MyClassA A2 = (3, 4);
    A2.PrintData();
    MyClassA A22 = 4; //与A2的定义等价
    A22.PrintData();

    //有参构造函数的第三种调用场景
    MyClassA A3 = MyClassA(5, 6);
    A3.PrintData();
}

int main()
{
    //ClassTest1();
    ClassTest2();

    std::cout << "Hello World!\n";
    system("pause");
    return 0;
}